C/C++
WINAPI C++ string в char
Есть текст std::string tt = "C++ бесишь"; как ее преобразовать в char ???
char - это один символ (точнее, 1 байт). Нельзя строку (например, 10 символов) преобразовать в один символ. Можно получить какой-то один символ строки, это будет char.
// пример с динамическим массивом
#include <iostream>
#include <string>
#include <cstdlib>
#include <cstring>
using namespace std;
int main() {
cout << "String: ";
string line;
getline(cin, line);
auto length = line.length();
auto str = new char[length + 1];
copy(line.begin(), line.end(), str);
str[length] = 0;
cout << line << '\n' << str << '\n';
delete[] str;
system("pause > nul");
}
// пример со статическим массивом
#include <iostream>
#include <string>
#include <cstdlib>
#include <cstring>
using namespace std;
int main() {
cout << "String: ";
string line;
getline(cin, line);
auto length = line.length();
char str[0xFF];
if (length < size(str)) {
copy(line.begin(), line.end(), &str[0]);
str[length] = 0;
cout << line << '\n' << str << '\n';
}
system("pause > nul");
}
#include <iostream>
#include <string>
#include <cstdlib>
#include <cstring>
using namespace std;
int main() {
cout << "String: ";
string line;
getline(cin, line);
auto length = line.length();
auto str = new char[length + 1];
copy(line.begin(), line.end(), str);
str[length] = 0;
cout << line << '\n' << str << '\n';
delete[] str;
system("pause > nul");
}
// пример со статическим массивом
#include <iostream>
#include <string>
#include <cstdlib>
#include <cstring>
using namespace std;
int main() {
cout << "String: ";
string line;
getline(cin, line);
auto length = line.length();
char str[0xFF];
if (length < size(str)) {
copy(line.begin(), line.end(), &str[0]);
str[length] = 0;
cout << line << '\n' << str << '\n';
}
system("pause > nul");
}
если нужно char* то это tt.c_str();
В плане корректного преобразования и хранения в однобайтовые символы char это не полезет. По старинке и по стандарту Си это пихают в строку типа wchar_t. Есть и другие (новые) типы.
Александр Неверко
а как именно string в wchar_t запихать?
См. https://www.cplusplus.com/reference/string/string/c_str/
#include "string"
#include "stdio.h"
using namespace std;
int main(void) {
string tt = "C++ бесишь";
printf(tt.c_str());
return 0;
}
#include "string"
#include "stdio.h"
using namespace std;
int main(void) {
string tt = "C++ бесишь";
printf(tt.c_str());
return 0;
}
std::string tt = "Выбери язык попроще, раз бесит";
Александр Неверко
не могу 200к заплатил, научили ток C++, а winapi нет. Ну как не научили, вроде учат но как-то медленно.
Похожие вопросы
- Создание функции std::size_t String::find(char ch)
- Программа на C++ с переводом Char в Int и наоборот при переводе возвращает НИЧЕГО
- С++. Является ли замена string на char, где это возможно, оптимизацией кода?
- C++ WINAPI помогите пожалуйста разобраться с LNK1120 при подключении к mysql
- Ошибка C2664: невозможно преобразовать аргумент 1 из "const char [6]" в "char *" в C ++
- Различаются ли WinApi для Си и С++?
- Различие указателей int *; и char *;
- Значение типа const char* нельзя присвоить сущности типа char*
- Сравнение элементов массива типа char с символом типа char
- Как конвертировать Char или Tchar или wchar_t в LPWSTR?