9 개의 정수 값으로 문자열 9 개를 읽고 배열에 저장하려고합니다. (지금은 9 개의 정수로 저장합니다. 일단 그들이 OK에서 읽으면 배열에서). 일반적인 접근 방식은 내가 가져 갔다 : 문자열을 9 개의 문자 값으로 나누고, 각각을 정수로 변환하고 9 개의 정수로 저장하고, 정수를 배열에 넣는다. 이상한 점은 하나의 값이 아무런 문제없이 하나의 문자로 나뉘는 반면, 꼭대기에있는 다른 값 (어떻게 그 문자에 전혀 포함되어 있지 않습니까?)을 어떻게 든 "보게"하고 뒤쪽으로 변환한다는 것입니다.C++ atoi 프로그램의 같은 부분에 생성 된 다른 문자의 값을
샘플 코드 :
countrows = 1;
countcols = 1;
cout << endl << "Enter values for boxes in row " << countrows << ", enter 0 for open boxes (enter 9 numbers, with no spaces or delimiters): ";
string inputline;
cin >> inputline;
char col1, col2, col3, col4, col5, col6, col7, col8, col9;
int int1, int2, int3, int4, int5, int6, int7, int8, int9;
col1 = inputline[0];
col2 = inputline[1];
col3 = inputline[2];
col4 = inputline[3];
col5 = inputline[4];
col6 = inputline[5];
col7 = inputline[6];
col8 = inputline[7];
col9 = inputline[8];
int1 = atoi(&col1);
int2 = atoi(&col2);
int3 = atoi(&col3);
int4 = atoi(&col4);
int5 = atoi(&col5);
int6 = atoi(&col6);
int7 = atoi(&col7);
int8 = atoi(&col8);
int9 = atoi(&col9);
cout << "inputline: " << inputline << endl;
cout << "col1: " << col1 << " col2: " << col2 << " col3: " << col3 << endl; //debug line
cout << "int1: " << int1 << " int2: " << int2 << " int3: " << int3 << endl; //debug line
이것의 결과는 다음
은 (공백 또는 구분자 9 개 숫자 입력) 오픈 박스 0을 입력 행 1 박스 값을 입력 456,123,789 inputline : 456,123,789 COL1 4 COL2 5 COL3 6 INT1 4 INT2 54 INT3 : 654
이유 INT는 (INT1 같아야 4 INT2 5 INT3 : 6) (5) 및 (65) INT3 포함 않는다
은 C 문자열의 문자 배열이 아니며 문자는 크기가 1 인 문자 배열입니까? – user2333388
아니요, C- 문자열은 0 (NULL) 요소로 끝나는 문자 배열입니다. 어떻게 든 C는 문자열이 얼마나 긴지를 알아야합니다. 그렇죠? –
그리고 문자는 문자 배열이 아닙니다. 그것은 단지 원시적 인 유형입니다. –