Как предотвратить это неявное преобразование типа между int и std :: string, что очень сильно подвержено ошибкам. Вот код.преобразование типа implict между int и строкой
#include <iostream>
#include <string>
using namespace std;
int main() {
string s="string";
s = 123456789; //assign a int value to std::string
cout << s;
// your code goes here
return 0;
}
Вышеприведенный код может быть скомпилирован без предупреждения, и результат явно не соответствует коду. Можно ли этого избежать?
Обновление: 123456789
будет вызывать предупреждение о переполнении, если установлен флаг -Wall
. Но если я перейду на s = 98
, больше не будет предупреждений. но я действительно хочу, чтобы строка была строкой 98
, а не символом ascii b
. Как это предотвратить?
какой компилятор вы используете? Я получаю предупреждение с моим g ++ 4.7 –
Вот почему мы всегда компилируем с включенными предупреждениями и замечаем их: 'warning: неявное преобразование из 'int' в 'char' изменяет значение с 123456789 до 21 [-Wconstant-conversion ] s = 123456789; ' –
Сообщите нам, что вы используете. – 101010