О чем я работаю:
Здравствуйте. В настоящее время у меня есть переменная char**
, которая является указателем на массив строк. У меня есть цикл, который встречается, и в этом цикле char**
необходимо скопировать в вектор structs. Таким образом, структура имеет переменный тип char ** внутри него.
К сожалению, для этой части я должен использовать тип char**
. Я не могу использовать тип char* vName[]
.Как скопировать значения данных в char ** в новый символ **?
Что моя проблема:
Проблема я в настоящее время сталкивается в том, что, когда я добавить новую-структуру, то char**
указывает на новейших данных, имеющихся во всех структурах, а не самая последняя.
То, что я пробовал:
Я попытался с помощью strcpy
, memcpy
и используя простые старые значения, но они, кажется, не работают. Я пробовал использовать newItem.storedVars[i] = newVars
, но это тоже не работает.
Как я могу получить или скопировать данные в новый массив char**
и сохранить его в структуре без его повторного изменения петлей?
#include <iostream>
#include <string>
#include <vector>
using namespace std;
struct StringHolder{
char** storedVars; //stored char** variable
};
int main(int argc, char *argv[]){
char** newVars; //stores current char** values
int counter = 100; //counter
vector<StringHolder> vectorOfStructs;
while(counter!=0){ //while counter is going downward
StringHolder newItem; //create a new string
char** storedVarsToAdd; //stored variables that I will be adding
newVars = externalVarsFetcher(); //get the new char** variable from the external function
storedVarsToAdd = newVars; //this statement doesn't work
//neither does this statement
for(int i = 0; i < 10; i++){
storedVarsToAdd[i] = newVars[i];
}
newItem.storedVars = storedVarsToAdd; //take the new item I created, update it's char** value with a new one
vectorOfStructs.push_back(newItem); //push the struct onto the vector
counter--; //continue through the array
}
}
Магазин 'std :: string' в вашем' vector': 'vector vectorOfStrings;' –
Что означает «это заявление не работает»? Вы имеете в виду, что он не компилируется или что он не делает то, что вы ожидаете, или сбой вашего приложения. – pm100
Вы просто копируете указатели вокруг ... подумайте о том, какой тип хранимыхVarsToRead и storedVarsToRead [i]. Вы даже не выделили память для сохраненногоVarsToRead –