char* -> STL string
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Подскажите пожалуйста как перевести?
такая штука почему-то пишет в strTmp только первый символ:
TCHAR* strChr "12";
string strTmp(strChr);
такая штука почему-то пишет в strTmp только первый символ:
TCHAR* strChr "12";
string strTmp(strChr);
std::string s1 = std::string(pChar);
странно, в обычной ситуации преобразование прокатывает:
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"
}
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"
}
кстати, scanf как-то странно читает из файла строку "12":
31 00 32 00 00 00 (т.е. 1.2...)
думаю из-за этих 00 считывается только 1-й символ, если так, то как в этом случае быть?
31 00 32 00 00 00 (т.е. 1.2...)
думаю из-за этих 00 считывается только 1-й символ, если так, то как в этом случае быть?
Ты, видимо, компилишь проект в конфигурации UNICODE. Тебе нужно отключить UNICODE, чтобы правильно компилился проект. Либо использовать специальные функции для работы с текстом в обоих конфигурациях.
Несложно проверить. В коде функции напиши , а потом в отладчике посмотри чему будет равен размер символа. Возможно сам текст в файле сохранён как UNICODE.
Код: Выделить всё
const int c = sizeof(TCHAR);
WinMain, спасибо! Проблема действительно была с неправильной обработкой юникода.
По ходу дела возникает вопрос: как корректно считать с юникодовский файл?
По ходу дела возникает вопрос: как корректно считать с юникодовский файл?