2014-04-05 4 views
0

В моем основном методе,Как хранить пользовательский ввод как char *?

int main() 
{ 
     char *words = (char *)"GETGETYETYET"; 
     char *pattern = (char *)"GET"; 
     return 0; 
} 

Вместо * слов и * модель является предопределенным набором символов, я хочу, чтобы получить пользовательский ввод, тип пользователей во имени текстового файла, и я хочу строки в этом .txt-файле, которые будут храниться как (char *). Как я могу это сделать?

+0

Посмотрите на 'std :: string' и' std :: fstream'. – Shoe

+0

Просто обратите внимание, используйте 'const char *' (или лучше, 'std :: string') вместо' char * '. Изменение строковых литералов - неопределенное поведение, поэтому от использования 'char *' ничего не получится. – chris

ответ

2

Вы не.

Если вы не хотите иметь дело со строковыми распределений, deallocations и домовладений, с переполнения буфера и проблемы безопасности, вы просто использовать std::string ...

Как это:

#include <iostream> 
#include <string> 

int main() { 
    std::string a = "abcde"; 
    std::string b; 
    getline(std::cin, b); 
    std::cout << a << ' ' << b; 
    return 0; 
} 

Пусть ваши строки на файл x.txt, один на линию:

#include <iostream> 
#include <string> 
#include <fstream> 

int main() { 
    std::string line; 
    std::ifstream f("x.txt"); 
    while(std::getline(f, line)) 
    std::cout << ' ' << line << '\n'; 
    return 0; 
} 

Дело в том, что вы действительно не хотите, чтобы хранить вещи я n char* ...

+0

Вы действительно прочитали вопрос? – Shoe

+0

Да, нет [не компилируется] (http://coliru.stacked-crooked.com/a/86746f166ae29901). – Shoe

+0

извините, отредактирован ... и ... – Massa

Смежные вопросы