C ++异常:内存位置0x003DF4C0的std :: out_of_range

时间:2019-04-26 18:18:13

标签: c++ visual-studio c++11 fstream ofstream

我正在制作一个C ++程序,该程序从电话列表中获取电话并从其中创建vCard文件。但是我在将电话复制到文件时遇到问题,这是模板的字符串替换。我该如何解决?

我已经尝试在该网站上寻找一些解决方案,但是它们都不是关于ofstream的,这就是我正在使用的解决方案。

int main()
{
    string fileDest;

    string vCardTemp = "BEGIN:VCARD\nVERSION:3.0\nTEL;TYPE=WORK,MSG: phonehh\nEND:VCARD\n";

    cout << "Input file destination...\n"; 

    cin >> fileDest;

    cout << "Analyzing data...";


    ifstream inFile;
    inFile.open(fileDest);

    if (!inFile)
    {
        cout << "Error! File doesn't exist or can't be opened.";
        cin.ignore();
        exit(0);
    }

    cout << "File found. Dissecting...";

    string line;

    string finalvCard = "";
    string copy = vCardTemp;
    while (getline(inFile, line))
    {
        istringstream iss(line);

        copy.replace(copy.find("phonehh"), 7, line);

        //finalvCard += copy;
        finalvCard.append(copy);

        cout << " - " + line + " written to vCard.\n";
    }

    cout << "\n\nFinished vCard conversion. Where do we store this (include filename)?\n";

    string dest;

    cin >> dest;

    ofstream file(dest);
    file << finalvCard;

    cout << "File stored! Cya!\n";
    return 0;
}

1 个答案:

答案 0 :(得分:3)

这是另一个问题的重复:C++ simple string replace, non complicated code, but producing crazy error

@Billy ONeal有一个很好的解释,我将在这里重复: 如果str.replace(str.find(sought), sought.size(), replacement);找不到要查找的内容,那么str.find()是错误的。 str.find()将返回str::npos,它将不是字符串中的有效位置。因此,替换调用失败,并显示索引超出范围异常。