[英]C++ reading data from a file into a char*
我正在嘗試從文件中讀取行,並使用以下代碼將其保存到char * data []變量中:
fstream level;
level.open("level.txt");
char* row;
int i = 0;
char* data[3];
while (level >> row) {
data[i] = row;
cout << i << " " << data[i] << "\n";
i++;
}
for (i = 0; i < 3; i++) {
cout << "\n " << i << " = " << data[i];
}
level.close();
該文件的內容如下:
aaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaa
如您所料,第一個cout輸出以下內容:
0 aaaaaaaaaaaaaaaaaaaaaaaa
1 aaaaaaaaaaaaaaaaaaaaaaaa
2 aaaaaaaaaaaaaaaaaaaaaaaa
但是第二個輸出以下內容:
0 =
1 =
2 =
如果已刪除data []中的所有數據。 誰能告訴我為什么會這樣?
謝謝你的幫助。
由於您使用標准庫( cout
),為什么不使用string
代替char*
呢?
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
fstream level;
level.open("level.txt");
string row;
int i = 0;
string data[3];
while ((i<3) && (level >> row)) {
data[i] = row;
cout << i << " " << data[i] << "\n";
i++;
}
for (i = 0; i < 3; i++) {
cout << "\n " << i << " = " << data[i];
}
level.close();
您正在使用指針,而沒有為其分配內存! 您可以自行分配它們,但是如果讀取的行多於分配的內存,則必須注意。 請嘗試使用這些垃圾代碼。 它使用std向量和字符串,您不必分配內存。 您可能需要啟用編譯器的std-C11開關(std :: string :: push_back)
fstream level;
level.open("level.txt");
char row;
int i = 0;
std::vector<std::string> > data;
data.push_back(std::string());
while (level >> row) {
if (row!='\n'){
data.back().push_back(row);
cout << row;
else{
data.push_back(std::string());
cout << "\n";
}
for (int i = 0; i < data.size(); i++) {
cout << "\n " << i << " = " << data[i].c_str();
}
level.close();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.