使用getline和string函数在C ++程序中进行分段错误

时间:2018-06-19 07:03:24

标签: c++ string

我用C ++编写了一个示例程序,它正在崩溃。我不知道为什么会崩溃。任何帮助都将受到高度赞赏。

以下是示例程序:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;


string foo(string b)
{
  cout << b << endl;
}

int main(int argc, char* argv[])
{
  string fileName = argv[1];

  ifstream ifile(fileName.c_str(), ios::in);

  string line;

  while(getline(ifile , line))
    cout << line << endl;

  ifile.close();

  foo("q");

  return 0;
}

我传递1.txt作为参数,其中包含以下内容:

a
b
c

我得到的输出是:

a
b
c
q
Segmentation fault

2 个答案:

答案 0 :(得分:3)

您将foo()声明为返回string对象,但return中没有foo()语句,因此返回值不确定,代码string时,>未定义的行为。

如果您不打算return,那么您需要将返回值声明为void

void foo(string b)

答案 1 :(得分:-3)

void foo(string b)
{
  cout << b << endl;
return;
}