gpt4 book ai didi

c++ - main() 之前的段错误

转载 作者:太空宇宙 更新时间:2023-11-04 11:39:14 26 4
gpt4 key购买 nike

这段代码有问题。使用 g++ 编译后,我运行 a.out 并出现段错误并且没有显示“此处”。代码很短:

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <sstream>
using namespace std;

bool inWords(vector<string> words, string str);

int main()
{
cout << "here";

vector<string> words;
string str;
istringstream iss;
ifstream file("data.txt", ifstream::in);

// read in words
for(int i = 0; file >> str; /*no i++*/)
{
if(str[str.length() - 1] == '.')
str.erase( str.length()-1);
// if word has a period at the end, erase it

if(!inWords(words, str))
{
// if word is not in vector words, add it
words.push_back(str);
i++;
}
}

// output each word
for (vector<string>::size_type i = 0; i < words.size(); i++)
cout << words[i];

// return to beginning of file
file.clear();
file.seekg(0, ios::beg);

// read in sentences
// to be implemented

file.close();

return 0;
}

bool inWords(vector<string> words, string str)
{
for(int i = 0; !words[i].empty(); i++)
if(words[i] == str) { return true; }
return false;
}

据我所知,应该没有什么问题。 data.txt 肯定与文件位于同一目录中,我没有从命令行收到任何参数。谁能帮忙?

最佳答案

它不会在 main 之前。尝试使用调试器查看它发生的位置(例如 GDB),这是非常方便的工具。您看不到“此处”的原因是缓冲区未刷新。放一个<< std::endl在它之后,以便它在该点强制输出。

技术细节:您可以在 main 之前进行段错误,但这会在构造函数中发生。我看到您没有在全局范围内定义/实例化自定义对象。

关于c++ - main() 之前的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22032174/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com