【问题标题】:How to properly store file lines in a char array? (C++)如何将文件行正确存储在 char 数组中? (C++)
【发布时间】:2014-12-16 22:16:52
【问题描述】:

我正在尝试将 .txt 文件的每一行读入一个字符数组。

for(int i = 0; i <10; i++)
  { 
       fin.getline(lineChar, 164);      // place txt line into char array
       for(int a = 9; a<164; a+=1)      // remove first nine chars of garbage
           lineChar[a-9] = lineChar[a];
       name = getPlaceName(lineChar);
       cout<< name<<endl;
  }

我已经检查和测试过每行的长度 (164),因此如果我尝试获取 165 个字符,我会崩溃。这适用于第一行,但之后我会胡言乱语。

Aaron
g



5 
9

文本文件有如下几行:

  PA4200100Aaronsburg                                                            485      209       1349064             0    0.520877    0.000000 40.900946 -77.453383

我该如何解决这个问题?

【问题讨论】:

  • 将两个地方的常量164 更改为165,以便复制尾随的空值。
  • 你为什么不使用 std::string?
  • @ejp 我试过了,结果崩溃了

标签: c++ string input char


【解决方案1】:

您可以使用 std 来读取文件。

std::string str;

std::vector<std::string> myvec;

while( std::getline( myfile, str ) )
{
    myvec.push_back( str );
}

如果您需要在前 9 个字符(名称)之后获取接下来的 70 个字符,您可以使用:

std:cout << str.substr( 9, 70 );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-07
    • 2012-02-02
    • 2016-11-27
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    相关资源
    最近更新 更多