小编nan*_*mtl的帖子

C++ substring似乎指向了错误的位置

我正在用C++阅读一个文本文件.由于我是C++的新手,我添加了一堆"cout"语句来查看事物的行为.我得到了一个输出,我没有找到任何解释,希望这里有人能指出我的相关文字.

  1. 我读了一行
  2. 打印线
  3. 使用"substr()"在"line"中打印前2个字符
  4. 将该行复制到工作区("mybuffer")
  5. 打印我工作区的子字符串,长度为10个字符

问题:(a)(3)的输出似乎是一个转义序列(不可打印的字符).如果我将子串的长度从2更改为4,我得到一个/.(b)即使"mybuffer"的内容看起来正确(前两个字符确实是//),子字符串函数只返回七个(可打印的)字符.

while( std::getline( file, line ) )
{
foundeq = 0;
clearthis = 0;
mybuffer = line;
cout<< "line>>" << line<<"\n";
cout<<"first 2 chars in line>>"<<line.substr(0,2)<<"\n";
cout<< "mybuffer>>" << mybuffer<<"\n";
cout<<"first 10 chars in mybuffer>>"<<mybuffer.substr(0,10)<<"\n";
Run Code Online (Sandbox Code Playgroud)

输出:

    line>>//--------------------------------------------------
    first 2 chars in line>>\357\273
    mybuffer>>//--------------------------------------------------
    first 10 chars in mybuffer>>//-----
Run Code Online (Sandbox Code Playgroud)

到底是怎么回事??

提前感谢您的意见.

c++ string substr

2
推荐指数
1
解决办法
109
查看次数

标签 统计

c++ ×1

string ×1

substr ×1