2013-11-14 2 views
0

Привет, Я работаю над проектом палача для моего класса, и у меня возникла проблема. То, что я пытаюсь сделать, это получить список слов из файла, а затем поместить одно случайное слово в массив символов, но я не совсем уверен, как я должен преобразовать текстовую форму в массив строк в массив char мой код выглядит следующим образом в настоящее времяПреобразование слова из строкового массива в массив символов

#include <iostream> 
#include <fstream> 
#include <string> 
#include <cstring> 
using namespace std; 

int main(){ 
    ifstream infile; 
    string words[25]; 
    string wordss; 
    char cword[]; 
    int index=0; 
    infile.open("c:\\words.txt) 
    while (infile>>words){ 
     words[index]=words; 
     index=index+1; 



    } 





} 

теперь первоначально я получил просто просто сделать cword массив в случайное слово для одного из слов массива через случайно выбранный номер как cword = слова [0], но это Ждут» т работы. поэтому мне интересно, как вы конвертируете слово, выбранное из массива строк, которое будет использоваться для массива символов?

+0

'char cword []' неверно для объявления массива. Вы должны указать размер во время объявления. make 'char cword [];' to 'const char * cword' Затем вы можете сказать' cword = words [0] .c_str() ' – theAlias

ответ

0

char * cword следует использовать вместо char cword [], что позволит вам сохранить только одно слово после выделения памяти для него. Допустим, что длина вашего слова равна 10, после чего вы будете писать как cword = new char [10]; не забудьте удалить выделенную память позже с помощью delete [] cword;

Строка также может делать то, что вы пытаетесь сделать, без преобразования в char []. Например у вас есть: -

string cword = "Hello" 
cout<<cword[2]; // will display l 
cout<<cword[0]; // will display H 

Обычно отливка типа осуществляется с помощью следующих 2 заявления.

static_cast<type>(variableName); // For normal variables 
reinterpret_cast<type*>(variableName); // For pointers 

пример кода может быть: -

ifstream infile; 
char words[25][20]; 

int index=0; 
infile.open("c:\\words.txt"); 
while (infile>>words[index]){ 
    cout<<words[index]<<endl; // display complete word 
    cout<<endl<<words[index][2]; // accessing a particular letter in the word 
    index=index+1; 

Для того, чтобы написать хороший код, я предлагаю вам придерживаться только одного типа данных. Для этого самого проекта.

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