紧急求助:C++读取文件

soboy_cao 2008-12-16 10:19:58
文件如下:
filename.txt
paraName1="A(a integer,b string);\nB(a string,b int);\n"

能够通过文件的读取操作,如下

ifstream infile(_filePath.c_str());
if (!infile)
{
return false;
}
string inBuf;
if (infile >> inBuf)
{
::std::cout << inBuf << ::std::endl;
}
希望读出的为整行数据,但是如上方法读出的一行数据如下:
paraName1="A(a

在空格处已被截断,请问如何解决这个问题,我需要将第一行的数据读入string串中
...全文
136 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzh9955 2008-12-17
  • 打赏
  • 举报
回复
good
soboy_cao 2008-12-16
  • 打赏
  • 举报
回复
bool getTestData::readDataFile()
{
if (_filePath.empty())
{
return false;
}
ifstream infile(_filePath.c_str());
if (!infile)
{
return false;
}
string inBuf;
std::ostringstream tmp;
while (tmp << infile.rdbuf())
{
inBuf = tmp.str();
cout << inBuf << endl;
}

return true;
}

ostringstream 也可以实现,但是获取的串的转义字符在重新输出已经无效了
输出结果如下

A(a integer,b string)\n{123,\"123\",\n};

感觉有些错误了
soboy_cao 2008-12-16
  • 打赏
  • 举报
回复
bool getTestData::readDataFile()
{
if (_filePath.empty())
{
return false;
}
ifstream infile(_filePath.c_str());
infile >> noskipws;

if (!infile)
{
return false;
}
string inBuf;
//if (infile >> inBuf)
while (getline(infile,inBuf))
{
//::std::cout << inBuf << ::std::endl;
splitData(inBuf);
}
return true;
}
修改之后,虽然可以读取一行,但是cout串时显示如下:

A(a integer,b string)\n{123,\"123\",\n};
转义字符都未生效,

而我需要是这样的结果
A(a integer,b string)
{123,"123",
};

感觉还是有点问题,请高手看看~~
tianfu1 2008-12-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 SearchLife 的回复:]
用getline(infile,inbuf)来读取行
[/Quote]
正解
soboy_cao 2008-12-16
  • 打赏
  • 举报
回复
if (_filePath.empty())
{
return false;
}
ifstream infile(_filePath.c_str());
infile >> noskipws;

if (!infile)
{
return false;
}
string inBuf;
if (infile >> inBuf)
{
::std::cout << inBuf << ::std::endl;
}
输出结果还是不对啊
paraName1="A(a

打出的结果在空格处被截断了
SearchLife 2008-12-16
  • 打赏
  • 举报
回复
用getline(infile,inbuf)来读取行
lann64 2008-12-16
  • 打赏
  • 举报
回复
试试先infile>>noskipws

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧