Страница 1 из 1
char* -> STL string
Добавлено: 21 мар 2006, 15:02
Victor
Подскажите пожалуйста как перевести?
такая штука почему-то пишет в strTmp только первый символ:
TCHAR* strChr "12";
string strTmp(strChr);
Добавлено: 21 мар 2006, 15:11
WinMain
std::string s1 = std::string(pChar);
Добавлено: 21 мар 2006, 15:26
Victor
странно, в обычной ситуации преобразование прокатывает:
TCHAR* tmp1 = "qwer";
string tmp2(tmp1);
cout << tmp2;
но в моём случае это почему-то не проходит:
char s[256];
StreamRead = fopen( "file.txt", "r" );
fscanf(StreamRead, "%S", s);
CCell cell(s);
вот конструктор CCell:
CCell::CCell(const TCHAR* strCell)
{
string strTmp = string(strCell);//здесь strCell = "12", а strTmp = "1"
}
Добавлено: 21 мар 2006, 15:36
Victor
кстати, scanf как-то странно читает из файла строку "12":
31 00 32 00 00 00 (т.е. 1.2...)
думаю из-за этих 00 считывается только 1-й символ, если так, то как в этом случае быть?
Добавлено: 21 мар 2006, 16:09
WinMain
Ты, видимо, компилишь проект в конфигурации UNICODE. Тебе нужно отключить UNICODE, чтобы правильно компилился проект. Либо использовать специальные функции для работы с текстом в обоих конфигурациях.
Добавлено: 21 мар 2006, 16:20
Victor
ключ _MBCS
Добавлено: 21 мар 2006, 17:02
WinMain
Несложно проверить. В коде функции напиши
, а потом в отладчике посмотри чему будет равен размер символа. Возможно сам текст в файле сохранён как UNICODE.
Добавлено: 21 мар 2006, 17:19
Victor
WinMain, спасибо! Проблема действительно была с неправильной обработкой юникода.
По ходу дела возникает вопрос: как корректно считать с юникодовский файл?
Добавлено: 22 мар 2006, 11:34
Absurd
Используй std::wstring