Aly*_*une 3 c++ string vector getline
基本上我的问题是我试图从一个充满数字和注释的 .txt 文件中读取数据并将每一行存储到一个字符串向量中,但是我的 getline 函数在第一个空格字符处停止读取,所以像 (*评论 *) 被分解成
str[0] = "(*";
str[1] = "comment";
str[2] = "*)";
Run Code Online (Sandbox Code Playgroud)
这是我的 getline 函数代码块的样子:
int main() {
string line;
string fileName;
cout << "Enter the name of the file to be read: ";
cin >> fileName;
ifstream inFile{fileName};
istream_iterator<string> infile_begin {inFile};
istream_iterator<string> eof{};
vector<string> data {infile_begin, eof};
while (getline(inFile, line))
{
data.push_back(line);
}
Run Code Online (Sandbox Code Playgroud)
这就是 .txt 文件的样子:
101481
10974
1013
(* comment *) 0
28292
35040
35372
0000
7155
7284
96110
26175
Run Code Online (Sandbox Code Playgroud)
我不明白为什么它没有阅读整行。
这是因为您的代码未std::getline用于读取输入文件的非常简单的原因。
如果您非常仔细地查看您的代码,您会发现,在到达该点之前,您的代码istream_iterator<string>在文件上构造了 an ,并通过将它和结束istream_iterator<string>值传递给了vector的构造函数,这有效地吞下了整个文件,一次一个以空格分隔的单词,放入向量中。
当事情进入getline循环时,整个文件已经被读取,并且循环完全没有做任何事情。getline就目前的事态而言,你并没有真正做任何事情。
istream_iterator彻底摆脱那些涉及s 的东西,让我们getline去做它原本打算做的工作。
| 归档时间: |
|
| 查看次数: |
1231 次 |
| 最近记录: |