我正在尝试逐字读取文件并对每个单词执行一些实现。将来我想知道每个单词的位置在哪里。位置是该行中的行号和字符位置。如果字符位置不可用,我只需要知道当我到下一行时我正在读文件。这是我现在的示例代码:
string tmp;
while(fin>>tmp){
mylist.push_back(tmp);
}
我需要知道鳍何时进入下一行?!
答案 0 :(得分:1)
解决此问题的一种简单方法是使用std::getline
,运行自己的计数器,并使用额外的string stream将行内容拆分为单词,如下所示:
string line;
int line_number = 0;
for (;;) {
if (!getline(fin, line)) {
break;
}
istringstream iss(line);
string tmp;
while (iss >> tmp) {
mylist.push_back(tmp);
}
line_number++;
}
答案 1 :(得分:1)
“我需要知道鳍何时进入下一行”
使用stream的运算符>>
无法实现。您可以逐行读取输入并使用临时istringstream
对象分别处理每一行:
std::string line, word;
while (std::getline(fin, line)) {
// skip empty lines:
if (line.empty()) continue;
std::istringstream lineStream(line);
for (int wordPos = 0; lineStream >> word; wordPos++) {
...
mylist.push_back(word);
}
}
不要忘记#include <sstream>