C++读文件,忽略逗号和数据输出到屏幕
我的格式有一个文件: 名字,中间名,姓氏,少校,市,州,GPAC++读文件,忽略逗号和数据输出到屏幕
我想读该文件并将没有逗号的数据输出到屏幕上。这是我到目前为止,但只输出GPA的:
#include <fstream>
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main(){
string fileline;
string word;
ifstream studentData;
studentData.open("studentData.csv");
while(studentData){
getline(studentData,fileline);
istringstream ss(fileline);
while(getline(ss, word,','));{
cout << word << '\n';
}
}
return(0);
}
我认为这个问题是这一行:
while(getline(ss, word,','));{
尝试删除分号。这将是正确的做法:
while(getline(ss, word,',')){
分号,使循环做什么,直到它读取的最后一个字(我猜是GPA),然后您再进行打印。
让我们知道,如果这有效!
这个技巧。目前它将自行打印出每个单词。我试图找出一旦我到达行尾时只打印到新行,所以它会打印7个字,然后开始一个新行。有小费吗? –
是的。它正在打印新的一行,因为在cout结束时\ n。要用空格打印,你可以这样做: while(getline(ss,word,',')){0122} //打印一个空格而不是一个新行 } cout
我想以与它开头相同的形式输出数据,只是没有逗号。如果我这样做,而不是'\ n',它会把它找到的每个单词放在一起。 (我应该提到输入文件有大约27行)。所以我想打印出7个单词,然后用新的线冲洗并重复 –
如果你只是想复制没有逗号,为什么不复制没有逗号?
ifstream studentData("StudentData.csv");
studentData >> noskipws;
std::remove_copy(std::istream_iterator<char>(studentData),
std::istream_iterator<char>(),
std::ostream_iterator(std::cout)
',');
OTOH,如果输入没有任何分离除逗号的领域,这将产生与它们的输出都跑起来。你可能更字段之间写出来空格字符,而不是:
std::transform(std::istream_iterator<char>(studentData),
std::istream_iterator<char>(),
std::ostream_iterator<char>(std::cout),
[](char ch) { return ch == ',' ? ' ' : ch; });
这样,你仍然有一些向帮助追踪的其中一个领域的结束和下一个开始。当然,如果你喜欢,比如选项卡而不是空格,你可以将空间改为选项卡。
while(getline(ss, word, ',');
中的分号不应该在那里。也就是说,stringstreams很慢,我宁愿这样做,如下所示。
while(std::getline(studentData, fileline)) {
std::erase(std::remove(fileline.begin(), fileline.end(), ','), fileline.end());
std::cout << fileline << '\n';
}
在'while'中使用'getline'。你做了第二次(虽然留了一个';'),但不是第一个循环。 –