2013-07-05 2 views
1

Привет Я новичок в C++, и я требую некоторый вход для следующей задачи:указатель символов передается в качестве параметра преобразования в строку

В моем файле заголовка (MyClass.h) функция определяется следующим образом:

bool Function(char *InString,char *outStr); 

Это был реализован в «MyClass.cpp», как это:

bool MyClass::Function(char *InString,char *OutString=0) { 
    std::string str = ***** I require the InString to be converted to String and assigned to str. 
} 

в моей основной функции консоли я использовал следующую функцию:

#include "MyClass.h" 
int _tmain(int argc, _TCHAR* argv[]) { 
    char inp[50]; 
    char output[50]; 
    memset(output,0,sizeof(output));//Intialized 
    std::cin>>inp; 
    MyClass x; 
    bool m = x.Function(inp,output); 
} 

Любая помощь глубоко оценена.

+3

Предлагаю вам начать чтение основных учебных пособий, поскольку это нечто очень простое и основное. –

+3

Почему вы не используете 'std :: string' повсеместно в своей программе? – 0x499602D2

+0

Кроме того, параметры по умолчанию относятся к объявлениям, а не к определениям. –

ответ

0

хорошо std::string имеет конструктор для этого:

const char *s = "\nHello, World!"; 
std::string str(s); 
cout<<str; 

char *s2 = "\nHello, World!"; 
std::string str2(s2); 
cout<<str2; 

дает мне:

Hello, World!

Hello, World!

1

По

str.assign(InString); 

вы можете назначить char к std::string.

0

Просто std::string str = InString; должен работать.

1

Вы можете просто указать символ-указатель на строку. Пока данные, на которые указывает указатель на символ, заканчиваются на нуль, копия будет работать должным образом.

std::string str = InString; 
+0

ОК, я понял. Я изучаю нулевой указатель в деталях. Я полагаю, что после использования memset мы инициализируем и массивом символов с 0, который автоматически помещает нулевой указатель. – Suzane