#c #char
#c #символ
Вопрос:
Итак, у меня есть массив символов, в котором есть другой массив символов (если я не ошибаюсь). Что мне нужно сделать, так это изменить третий элемент ( words[2]
). Этот третий элемент определенно будет числом. Я должен увеличить это число на 15 процентов. Следовательно, мне нужно преобразовать words[2]
в int
?
Функция:
void create(char* str) {
char** words = new char* [strlen(str)];
int count = 0;
for (char* part = strtok(str, " "); part != NULL; part = strtok(NULL, " ")) {
words[count] = _strdup(part);
count ;
}
cout << "nNew sentence with edited values:" << endl;
words[2] = words[2] ((int)words[2] / 100) * 15; //the main problem as I guess
for (int i = 0; i < count; i ) {
printf("%s ", words[i]);
}
cout << endl;
delete[] words;
}
Полный код:
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <iomanip>
#include <conio.h>
#include <string.h>
using namespace std;
void create(char*);
void main() {
const int maxLength = 100;
char* str = new char[maxLength];
cout << "Enter sentence:n";
cin.getline(str, maxLength);
create(str);
delete[] str;
}
void create(char* str) {
char** words = new char* [strlen(str)];
int count = 0;
for (char* part = strtok(str, " "); part != NULL; part = strtok(NULL, " ")) {
words[count] = _strdup(part);
count ;
}
cout << "nNew sentence with edited values:" << endl;
words[2] = words[2] ((int)words[2] / 100) * 15;
for (int i = 0; i < count; i ) {
printf("%s ", words[i]);
}
cout << endl;
delete[] words;
}
Как это должно выглядеть (3-й элемент увеличен на 15 процентов):
Невозможно сделать это с помощью string
. На самом деле, это моя домашняя работа из университета, и не использование string
является условием
Комментарии:
1. можете ли вы поделиться вводом и ожидаемым результатом и тем, какой результат вы получаете в настоящее время
2. Не связано: вы делаете все, что хотите, слишком сложным. Используйте
std::string
s иstd::vector<std::string>
. Для этого нет необходимости использоватьnew[]
anddelete[]
.3. word[2] — это не целое число, а символы. (int)word[2] не может быть преобразован в целое число с помощью магии. Вы должны использовать функцию string to integer, такую как atoi в c или stoi в c .
Ответ №1:
вам нужно преобразовать a char*
в int
, как показано ниже. (int)
приведение не будет работать
int a = atoi(words[2]); // make sure words[2] is null terminated
Комментарии:
1.Будучи немного педантичным: этот код не преобразует a
char*
в anint
. Он преобразует текст, которыйwords[2]
указывает на , в anint
. Четко помните различие между указателем и тем, на что он указывает; это избавит вас от многих головных болей. 1.