cout在getline之后不打印向量字符串
cout not printing string of vector after getline
我有一个包含以下内容的 .csv 文件:
1.0,2.0
2.0,3.0
现在我想读取这个文件并将它打印到终端。
我希望输出如下所示:
1.0|2.0|
2.0|3.0|
但我得到的是:
|
|
当我 运行 调试器时,矢量包含正确的数据,但它不会打印它。
向量数组 while cout(调试器):
array = {std::vector<std::vector>}
[0] = {std::vector<std::basic_string, std::allocator>}
[0] = {std::basic_string<char, std::char_traits, std::allocator>} "1.0"
[1] = {std::basic_string<char, std::char_traits, std::allocator>} "2.0\r"
[1] = {std::vector<std::basic_string, std::allocator>}
[0] = {std::basic_string<char, std::char_traits, std::allocator>} "2.0"
[1] = {std::basic_string<char, std::char_traits, std::allocator>} "3.0\r"
我的代码:
#include <string>
#include <sstream>
#include <iostream>
#include <vector>
#include <fstream>
int main()
{
using namespace std;
ifstream in("C:\Users\freit\CLionProjects\Aufgabe2\data.csv", ios_base::in);
string line, field;
vector< vector<string> > array; // the 2D array
vector<string> v; // array of values for one line only
while ( getline(in,line) ) // get next line in file
{
v.clear();
stringstream ss(line);
while (getline(ss,field,',')) // break line into comma delimited fields
{
v.push_back(field); // add each field to the 1D array
}
array.push_back(v); // add the 1D array to the 2D array
}
// print out what was read in
for (size_t i=0; i<array.size(); ++i)
{
for (size_t j=0; j<array[i].size(); ++j)
{
cout.flush();
cout << array[i][j] << "|"; // (separate fields by |)
}
cout << "\n";
}
return 0;
}
问题出在我想阅读的 data.cls
中。
调试器在每一行的末尾显示一个 \r
(escape sequence)。
这可能是在使用 Excel 打开 data.cls
并勾选自动保存后出现的。
使用标准 windows 文本编辑器编写新的 data.cls
后问题得到解决。得到解决方案感谢评论!
我有一个包含以下内容的 .csv 文件:
1.0,2.0
2.0,3.0
现在我想读取这个文件并将它打印到终端。 我希望输出如下所示:
1.0|2.0|
2.0|3.0|
但我得到的是:
|
|
当我 运行 调试器时,矢量包含正确的数据,但它不会打印它。
向量数组 while cout(调试器):
array = {std::vector<std::vector>}
[0] = {std::vector<std::basic_string, std::allocator>}
[0] = {std::basic_string<char, std::char_traits, std::allocator>} "1.0"
[1] = {std::basic_string<char, std::char_traits, std::allocator>} "2.0\r"
[1] = {std::vector<std::basic_string, std::allocator>}
[0] = {std::basic_string<char, std::char_traits, std::allocator>} "2.0"
[1] = {std::basic_string<char, std::char_traits, std::allocator>} "3.0\r"
我的代码:
#include <string>
#include <sstream>
#include <iostream>
#include <vector>
#include <fstream>
int main()
{
using namespace std;
ifstream in("C:\Users\freit\CLionProjects\Aufgabe2\data.csv", ios_base::in);
string line, field;
vector< vector<string> > array; // the 2D array
vector<string> v; // array of values for one line only
while ( getline(in,line) ) // get next line in file
{
v.clear();
stringstream ss(line);
while (getline(ss,field,',')) // break line into comma delimited fields
{
v.push_back(field); // add each field to the 1D array
}
array.push_back(v); // add the 1D array to the 2D array
}
// print out what was read in
for (size_t i=0; i<array.size(); ++i)
{
for (size_t j=0; j<array[i].size(); ++j)
{
cout.flush();
cout << array[i][j] << "|"; // (separate fields by |)
}
cout << "\n";
}
return 0;
}
问题出在我想阅读的 data.cls
中。
调试器在每一行的末尾显示一个 \r
(escape sequence)。
这可能是在使用 Excel 打开 data.cls
并勾选自动保存后出现的。
使用标准 windows 文本编辑器编写新的 data.cls
后问题得到解决。得到解决方案感谢评论!