c++运行时错误中的字符串
strings in c++ run time error
我正在编写一个c++程序,该程序从文件中读取string
。在string
的末尾有一些数字。我的任务是从字符串的末尾开始显示nth
号。
#include<iostream>
#include<fstream>
#include<string>
#include<stdlib.h>
using namespace std;
int main(int argc,char** argv)
{
ifstream file;
int num,i=0,pos;
std::string lineBuffer;
file.open(argv[1],ios::in) ;
while (!file.eof())
{
getline(file, lineBuffer);
if (lineBuffer.length() == 0)
continue; //ignore all empty lines
else
{
pos=0;
std::string str1("");
std::string str2("");
std::string final("");
std::string number("");
std::string output("");
while(pos!=(-1))
{
pos=lineBuffer.find(" ");
str2=lineBuffer.substr(0,1);
lineBuffer=lineBuffer.substr(pos+1);
final+=str2;
i++;
}
number=final.substr((i-1));
num=atoi(number.c_str());
output=final.substr(i-(num+1),1);
cout<<output;
}
}
file.close();
return 0;
}
我的程序给出了文件第一行的正确输出。但之后它会给我一个运行时错误。我不知道为什么会这样。
我要发送到终端的文件包含:
a b c d 4
b e f g 2
请在调试器中运行您的程序以了解它正在做的特定行为。看看它在哪里偏离了你的期望。
gdb
可能是最简单的,你可以通过谷歌搜索"gdb备查单"开始。记住用-g
编译
您应该将pos
声明为size_t
而不是int
,因为std::string::find()
返回size_t
。
同样,当std::string::find()
不匹配时,它返回string::npos
而不是-1
。因此,您应该比较pos
和string::npos
,而不是整数字面值-1
。
相关文章:
- 删除指向指针的指针是运行时错误吗
- c++中的指针和运行时错误
- 使用 SET(C++) 检查两个给定字符串是否是字谜时出现运行时错误
- 如何修复我的字符串以避免运行时错误?
- 字符串::插入产生运行时错误
- 为什么此代码使用带有字符串(C )的MAP具有运行时错误
- C++:将字符串流转换为 char* 运行时错误
- 在VC2010中使用Char数组显示字符串时发生运行时错误
- 使用字符串向量初始值设定项时,我收到运行时错误"terminate called after throwing instance of `std::length_error`"
- 为每个使用内部字符串时运行时错误
- 反向字符串脚本给出运行时错误
- C++ 中的运行时错误字符串声明
- 字符串程序C++运行时错误
- 打印字符串时出现运行时错误,即使它在函数中运行良好
- 函数从字符串转换为int时出现运行时错误
- 使用 cout 打印字符串时C++代码块中的运行时错误<<
- 当使用字符串时,c++程序给出一个运行时错误
- c++ char*转字符串运行时错误
- c++运行时错误中的字符串
- 运行时错误反转字符串