将二维 Char[][] 数组的特定范围复制到 char * 或 std::string
Copy specific range of 2 Dimensional Char[][] Array to char * or std::string
假设您阅读了标题,这里有一个伪代码的小例子:
char inputChar[5][20];
{put data in array obviously}
char * outputChar;
copy(inputChar[2][7], inputChar[2][18], outputChar);
printf("%s", outputChar);
或可选(虽然我更喜欢上面的版本):
char inputChar[5][20];
{put data in array obviously}
std::string outputString;
copy(inputChar[2][7], inputChar[2][18], outputString);
cout outputString; //I don't know how to use std::strings with printf
我试过 std::copy 和 memcpy 但我无法让它工作。结果要么给我不属于字符串的随机字符,要么由于我不完全理解语法而导致编译器错误。
编辑:
这是我正在使用的实际代码:
(假设此示例已为 storeMenu 分配了数据)
int line = 0
int frame5 = 11;
char storeMenu[9][13];
char * temp1 = new char[12];
char * temp2 = new char[12];
std::copy(&storeMenu[line+1][0], &storeMenu[line+1][frame5-10], temp1);
std::copy(&storeMenu[line][frame5-10], &storeMenu[line][12], temp2);
要使用std::copy
,您需要一个指向字符位置的指针,您正在将字符本身传递到这里。您还需要初始化 outputChar
.
char inputChar[5][20] = {"abc","def","ghi01234567890","jkl"};
char * outputChar = new char[20];
auto last = copy(&inputChar[2][0], &inputChar[2][5], outputChar);
*last = '[=10=]';
printf("%s\n", outputChar);
或者使用 std::string
:
char inputChar[5][20] = {"abc","def","ghi01234567890","jkl"};
string outputChar;
copy(&inputChar[2][0], &inputChar[2][5], back_inserter(outputChar));
printf("%s\n", outputChar.c_str());
也将输入用作 std::string
:
string inputChar[5] = {"abc","def","ghi01234567890","jkl"};
int fromChar = 2; // from (inclusive) ^ ^
int toChar = 5; // to (exclusive) ^
string outputChar;
copy(inputChar[2].begin()+fromChar, inputChar[2].begin()+toChar, back_inserter(outputChar));
printf("%s\n", outputChar.c_str());
cout << outputChar << endl;
假设您阅读了标题,这里有一个伪代码的小例子:
char inputChar[5][20];
{put data in array obviously}
char * outputChar;
copy(inputChar[2][7], inputChar[2][18], outputChar);
printf("%s", outputChar);
或可选(虽然我更喜欢上面的版本):
char inputChar[5][20];
{put data in array obviously}
std::string outputString;
copy(inputChar[2][7], inputChar[2][18], outputString);
cout outputString; //I don't know how to use std::strings with printf
我试过 std::copy 和 memcpy 但我无法让它工作。结果要么给我不属于字符串的随机字符,要么由于我不完全理解语法而导致编译器错误。
编辑: 这是我正在使用的实际代码: (假设此示例已为 storeMenu 分配了数据)
int line = 0
int frame5 = 11;
char storeMenu[9][13];
char * temp1 = new char[12];
char * temp2 = new char[12];
std::copy(&storeMenu[line+1][0], &storeMenu[line+1][frame5-10], temp1);
std::copy(&storeMenu[line][frame5-10], &storeMenu[line][12], temp2);
要使用std::copy
,您需要一个指向字符位置的指针,您正在将字符本身传递到这里。您还需要初始化 outputChar
.
char inputChar[5][20] = {"abc","def","ghi01234567890","jkl"};
char * outputChar = new char[20];
auto last = copy(&inputChar[2][0], &inputChar[2][5], outputChar);
*last = '[=10=]';
printf("%s\n", outputChar);
或者使用 std::string
:
char inputChar[5][20] = {"abc","def","ghi01234567890","jkl"};
string outputChar;
copy(&inputChar[2][0], &inputChar[2][5], back_inserter(outputChar));
printf("%s\n", outputChar.c_str());
也将输入用作 std::string
:
string inputChar[5] = {"abc","def","ghi01234567890","jkl"};
int fromChar = 2; // from (inclusive) ^ ^
int toChar = 5; // to (exclusive) ^
string outputChar;
copy(inputChar[2].begin()+fromChar, inputChar[2].begin()+toChar, back_inserter(outputChar));
printf("%s\n", outputChar.c_str());
cout << outputChar << endl;