String Stream & amp; кли

У меня есть эта программа, и я хочу заполнить массив таблиц значениями, переданными из командной строки в целочисленной форме. Однако это строка s только назначается аргумент 6 .. в чем проблема?

#include <iostream>
#include <cctype>
#include <locale>
#include <cstdlib>
#include <sstream>
#include <string>

using namespace std;

int main(int argc,char *argv[]){
int i;
int tables[100];
stringstream str;
string s;
int result;
char value;

if(argc <=1){
cout<<"NO ARGUMENTS PASSED"<<endl;
exit(0);
}

/*char value = *argv[1];
cout<<value<<endl;
str << value;
str >> s;
result = stoi(s,nullptr,10);
cout<<result<<endl;*/

for (i=1;i<argc;i++){
if(isdigit(*argv[i])){
value = *argv[i];
str<<value;
str>>s;
cout<<s<<endl;
tables[i-1] = stoi(s,nullptr,10);

}

}}

0

Решение

Проверка функции isdigit, если символ является цифрой, поэтому командная строка

isdigit(*argv[i])

Возвращаемое значение true — первый символ char * — это цифра. Что вы хотите, чтобы преобразовать символ * в целое число, я предлагаю взглянуть на функция Атои.

Однако преобразование строки для печати вашего результата не является обязательным.

0

Другие решения

Проблема в том, что вы используете stringstream неправильно

Письменно str >> s вы достигаете eof в потоке.
Чтобы это исправить, вы можете избежать использования stringstream и вместо этого прямо назначить value в s,
Если вы хотите использовать stringstream, вы можете сбросить его обратно в исходное состояние после записи в s следующее:

str.str(std::string{});
str.clear();

и использовать его снова

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector