gpt4 book ai didi

c++ - C++ 中的 getline - 需要帮助

转载 作者:行者123 更新时间:2023-11-28 01:09:05 25 4
gpt4 key购买 nike

我正在使用 getline 读取到换行符的末尾,但是 C++ getline 将我的东西读到空格,

我有txt文件数据为

地址(制表符)1420 Happy Lane

当我做的时候

getline(reader, ss, '\t') 我在 ss 字符串中获取地址。当我执行 getline(reader, ss, '\n') 时,我只得到 1420。

我想要完整的“1420 Happy Lane”,如何获取?

谢谢。

#include <fstream>
#include <string>
#include <iostream>
#include <vector>
#include <sstream>

using namespace std;
int main( int argc, char *argv[] )
{
if( argc < 2 )
{
cout << "Missing filename as first argument" << "\n";
exit(2);
}

vector<string> myvector;
string ss;
int i=0, j=0;

ifstream reader(argv[1]);

if (! reader )
{
cout << "Error opening input file : " << " " << argv[1] << '\n';
return -1;
}

while( !reader.eof())
{
if ((i+1) % 2 == 0 )
getline(reader, ss, '\n');
else
getline(reader, ss, '\t');
if (ss[0] == '#')
{
//Skip
getline(reader,ss, '\n');i=0;
continue;
}

i++;
myvector.push_back(ss);
}

reader.close();

vector<string>::iterator it;
stringstream stream;
int vecloc=1;
string tag;
string sData;

cout << "myvector contains: \n";

for ( it=myvector.begin() ; it < myvector.end(); it++ )
{
switch (vecloc)
{
case 1: stream << *it; stream >> tag; vecloc++;break;
case 2:
stream << *it; stream >> sData;
// Do job
cout << tag << " " << sData << "\n";
// Reset.
vecloc=1; break;
default : break;
}
// Clear String stream
stream.str(""); stream.clear();
}

return(0);
}

输出

/home/sr/utl

cat abc.txt

嘿,c++ 让我抓狂。

/home/sr/utl

a.out abc.txt

我的 vector 包含:

嘿 c++

最佳答案

从您的编辑器中粘贴实际代码,并仔细检查您的数据文件中是否没有换行符(或其他意外的非打印字符)。

这里按预期工作:

#include <iostream>
#include <sstream>

using namespace std;

int main()
{
stringstream reader("address\t1420 Happy Lane\n");

string ss;

getline(reader, ss, '\t');
cout << "1: " << ss << endl;

getline(reader, ss, '\n');
cout << "2: " << ss << endl;
}

输出:

1: address
2: 1420 Happy Lane

关于c++ - C++ 中的 getline - 需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4435185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com