我想读取类似于此类
的每行txt文件1190/2132 123/23123 45
我想读取整行,然后将它们存储在三个单独的字符串中,以备将来用于构建树。我现在正在使用fgets,但是在将它放入字符串时遇到错误。我该怎么办?
答案 0 :(得分:3)
试试这个:
std::string line;
while(std::getline(file, line))
{
std::stringstream linestream(line);
std::string word1, word2, word3;
line >> word1 >> word2 >> word3;
// Store words
}
答案 1 :(得分:2)
你已经标记了问题C ++,但是你说你正在使用fgets
,所以我不确定你想要哪一个。
使用C stdio函数:
fscanf(file, "%s %s %s", str1, str2, str3);
使用C ++流:
input_stream >> str1 >> str2 >> str3;
答案 2 :(得分:0)
这可能有效:
string a, b, c;
getline(cin, a, '/')
getline(cin, b, ' ')
//will only get executed if the third string exist
if(cin >> c){}
答案 3 :(得分:0)
你需要得到它的工作:
int fileread(const char* filename, dataType& data /* some object saving the read info. */)
{
char lntxt[MAX_LNTXT_LENGTH_CPTIMGIDX]; // 4)
ifstream inSR(_filename); // 5)
if (inSR.is_open()) // 6)
{
// If file is open
while (inSR.peek()>0)
{
inSR.getline(lntxt, MAX_LNTXT_LENGTH_CPTIMGIDX);
// delim can be a set of possible delim
char* strTk = strtok(lntxt, _delim);
while (strTk != NULL)
{
strTk = strtok(NULL, _delim);
if (strTk != NULL)
// Your code to process the data, i.e. some arithmetic operation
// or store it in other variables or objects.**
}
inSR.close();
return 0;
}
else // 7)
{
cout <<"The file " <<_filename <<" can not be opened.";
return -1;
}
}