В следующей программе я получаю это, когда пытаюсь использовать cout
для вывода строки C++ на stdout
- остальные инструкции производить ожидаемый результат. Я использую MS Visual Studio 2010 в системе Windows 7.Невозможно использовать cout с строкой C++, если я не запустил ее через data() или c_str()
первого шанс исключения в 0x00dd4e89 в Lab1.exe: 0xC00000FD: Stack переполнения. Необработанное исключение в 0x00dd4e89 в Lab1.exe: 0xC00000FD: Переполнение стека. Программа «[3740] Lab1.exe: Native» вышла с кодом -1073741571 (0xc00000fd).
#include "StdAfx.h"
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <ostream>
#include <string>
#include <ctime>
//more code here
int main() {
int number = 1;
string myStr = "Hello, string!";
cout << "number: " << number << endl;
cout << "Hello, World!" << endl;
cout << myStr << endl; //failing instruction
cout << "\nHit any key to continue...." << endl;
cin.get();
return 0;
}
Мой инструктор предложил изменить неисправной инструкции использовать data()
или c_str()
так:
cout << myStr.data() << endl;
Я сделал это, и это решило проблему. Он не знал, почему, просто сказал, что это сработало, чтобы не беспокоиться об этом.
Мне кажется, что объект C++ ostream, такой как cout, должен иметь возможность обрабатывать строку C++. Я что-то упускаю, или мне действительно нужно использовать data()
или c_str()
с cout
?
Я также пробовал использовать std::cout
, std::string
и std::endl
- это не помогло.
Заранее благодарим за ваш совет; Я действительно хочу понять, что здесь происходит.
Helen
Вам нужны 'std :: string',' std :: cout' и 'std :: endl', если в' // больше кода здесь нет чего-либо или какой-либо из ваших файлов заголовков, которые вы нам не показываете. –
Опубликовать соответствующий код. Кусок, который вы отправили, не содержит вашей ошибки. Попробуйте сузить его до автономного минимального примера. –
Что находится в разделе «больше кода»? Я подозреваю, что это важно. –