天道酬勤,学无止境

如何将字符串转换为 char * 数组(How to convert string into char * array)

问题
`check.cpp: In function ‘int main()’:` int main() { string text="-f input.gmn -output.jpg"; int argc=text.length(); cout<<"argc: "<<argc<<endl; char const * argv = text.c_str(); cout<<"argv: "<<argv<<endl; int c = getopt (argc, &argv, "f:s:o:pw:h:z:t:d:a:b:?"); return 0; }
回答1
/* variables. */ std::vector< char* > argv; int i, argc, state; char c; /* convert string to char string with automatic garbage collection. */ std::vector< char > tokens(text.begin(), text.end()); tokens.push_back(0); /* tokenize string with space. */ for (state=0, argc=0, i=0; (c=tokens[i]); i++) { if (state) { if (c == ' ') { tokens[i]=0; state=0; } } else { if (c != ' ') { argv.push_back(&tokens[i]); argc++; state=1; } } } /* print argv. */ std::cout << "argc: " << argc << std::endl; for (i=0; i < argc; i++) { std::cout << "argv[" << i << "]: " << argv[i] << std::endl; } /* call getopt. */ c = getopt(argc, &argv[0], "f:s:o:pw:h:z:t:d:a:b:?");
回答2
argv[0] = "progname"; argv[1] = "-f"; argv[2] = "input.gmn" argv[3] = "-output.jpg" argv[4] = 0
回答3
for (int i=0; i<=stringLength; i++) { arv[i]=text[i]; } for (int i=0; i < stringLength; i++) { arv[i]=text[i]; } arv[stringLength] = '\0'; int getopt(int argc, char * const argv[], const char *optstring); char const * s = text.c_str(); int c = getopt (argc, &s, "f:s:o:pw:h:z:t:d:a:b:?");

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 如何将无符号字符数组转换为 C 中的字符串?(How do I convert an unsigned char array into a string in C?)
    问题 如果我有这样的数组 unsigned char data[2850] = ""; 在运行完我的程序的一部分后最终将充满字节元素,这样如果我循环遍历它并将其注销,我将看到以下内容 for (size_t i= 0; i < sizeof(data); i++) { printf("%02X ", data[i]); } //log window shows 01 24 81 00 0E 1C 44 etc... 有没有办法获取数据数组的所有元素并将它们放入一个 const char 中? 还是只有一根大绳子? 希望我说得够清楚了。 我的目标是最终将这个数据数组的所有元素变成一个 base64 编码的字符串,我可以在程序中的其他地方使用它。 回答1 C 中的字符串(char 数组)是由一个标记字符(空终止符: '\0' )终止的char的序列序列 这意味着,如果数组中的任何位置都有一个值为 0x00 的字节,则它可能会在序列结束之前终止“字符串”。 在您的示例中,如果您将data数组转换为字符串,则它的结尾将是第一个元素: data[]{00, EB, 23, EC, FF, etc... }; 现在,如果您想从此处的数据值中生成一个字符串,您可以使用sprintf() ,例如: unsigned char val = 00; data[0] = val; char dump[5
  • 如何将Char转换为Float(How to convert Char into Float)
    问题 如何在AVR Studio 4中将无符号的char值转换为float或double编码? 请帮助我是一个初学者,我的问题听起来也可能很愚蠢:/ 就像我有一个字符键 并且我已经使用lcd_gotoxy(0,0)在屏幕上打印了它; lcd_puts(keyPressed); 现在,我想使用此值来计算某些内容。如何将其转换为float或double? 请帮忙 回答1 例如,如果要在浮点数中将字符“ a”设置为65.0,则执行此操作的方法是 unsigned char c='a'; float f=(float)(c);//by explicit casting float fc=c;//compiler implicitly convert char into float. 例如,如果要在浮点数中将字符“ 9”设为9.0,则执行此操作的方法是 unsigned char c='9'; float f=(float)(c-'0');//by explicit casting float fc=c-'0';//compiler implicitly convert char into float. 如果您想将包含数字的字符数组转换为浮点数,这是方法 #include<string> #include<stdio.h> #include<stdlib.h> void fun(){
  • 如何将 int 数组转换为字符串数组 [关闭](how can i convert an int array into a string array [closed])
    问题 关闭。 这个问题需要更加集中。 它目前不接受答案。 想改善这个问题吗? 更新问题,使其仅通过编辑这篇文章来关注一个问题。 6年前关闭。 改进这个问题 我有一个整数数组: int a[5]={5,21,456,1,3} 我需要将这些数字存储到char数组中,以便 char 数组具有如下内容: char *s="52145613"; c 中是否有用于此的库函数? 回答1 sprintf做你需要的。 小例子 char str[128]; int i=0; int index = 0; for (i=0; i<5; i++) index += sprintf(&str[index], "%d", a[i]); snprintf处理 str 长度 char str[128]; int i=0; int index = 0; for (i=0; i<5; i++) index += snprintf(&str[index], 128-index, "%d", a[i]); 回答2 您需要做的是将 a 中的整数值转换为s中a字符值,为空终止字符留出空间。 在您的情况下,共有 9 个字符。 sprintf是合适的工具,因为值超过个位数: #include <stdio.h> int main(void) { int a[5]={5,21,456,1,3}; char s[9] = {0}
  • 如何将字符串转换为每个包含一个字符的字符串数组(How to convert a String into an array of Strings containing one character each)
    问题 我在这里有一个小问题。我需要将从控制台读取的字符串转换为字符串的每个字符。 例如字符串:“ aabbab”,我想将此字符串转换为字符串数组。我该怎么做? 回答1 String[] result = input.split("(?!^)"); 这样做是将输入字符串拆分为所有未以字符串开头开头的空字符串。 回答2 String x = "stackoverflow"; String [] y = x.split(""); 回答3 如果按String数组表示您是char数组: public class Test { public static void main(String[] args) { String test = "aabbab "; char[] t = test.toCharArray(); for(char c : t) System.out.println(c); System.out.println("The end!"); } } 如果没有,则String.split()函数可以将String转换为String数组 参见那些String.split示例 /* String to split. */ String str = "one-two-three"; String[] temp; /* delimiter */ String delimiter = "-
  • 如何将字节数组转换为字符串,反之亦然?(How to convert byte array to string and vice versa?)
    问题
  • 如何将具有 0 值字节的 char * 转换为 python 字符串?(How do you convert a char * with 0-value bytes into a python string?)
    问题 使用 ctypes 模块,我可以轻松地将 POINTER(c_char) 或 c_char_p 类型导入 python,但它们都没有提供一种方法来结束包含零值字节的 python 字符串。 c_char_p 以零结尾,这意味着来自 C 的 char * 数组在第一个零值处终止。 POINTER(c_char) 是导入可以具有 0 值的二进制数据的推荐方法,但似乎没有直接将其转换为 python 字符串的方法。 我可以做这个: pixels = clibblah.get_pixels() a = "" for i in range(0, clibblah.get_pixel_length()): a += pixels[i] ...但是这 1) 看起来不是很 Pythony,并且 2) 需要很长时间(在我的 Mac 上转换 640x480 像素数据块大约需要 2 秒)。 我在堆栈溢出时看到了很多关于这个的问题,但是如果我能看到一个不是人们会说的“你为什么需要这样做?” 或“c_char_p 会做你想做的事”(它不会,正如我上面所描述的)。 我见过的唯一可靠的建议是使用 c api PyString_FromStringAndSize,如下所示:http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/version/Doc
  • 在 Java 中转换为字符串之前,我应该如何终止字符数组(How should I terminate a char array before converting into a string in Java)
    问题 我正在从文件中读取字符数组,然后使用 String 构造函数将其转换为字符串。 read = fromSystem.read(b); String s = new String(b); 这段代码已经在程序中使用了很长时间并且工作正常,尽管直到现在它每次都读取数组的完整大小,255 个字符。 现在我将这个类重用于另一个目的,它读取的内容的大小各不相同。 我遇到的问题是,如果它读取 20 个字符,然后是 15 个字符,那么上次读取的最后 5 个字符仍在字节数组中。 为了克服这个问题,我在所读内容的末尾添加了一个空字符。 read = fromSystem.read(b); if (read < bufferLength) { b[read] = '\0'; } String s = new String(b); 如果我当时做了 System.out.println(b); 它有效,缓冲区的末尾不显示。 但是,如果我将该字符串传递到消息对话框中,它仍然会显示。 还有其他方法可以终止字符串吗? 回答1 用: String s = new String(b, 0, read) 反而。 回答2 您需要使用 String 构造函数来指定字节数组中有效的字节范围。 String(byte[] bytes, int offset, int length); 像这样使用它: read =
  • 将字符串数组转换为C中的十六进制数字(Convert string array into hex numbers in C)
    问题 我有一个文件,其中包含许多行和列的矩阵。 它看起来像下面的东西: fa ff 00 10 00 ee ee 00 00 30 dd d1 00 aa 00 矩阵中的每个条目都是八位值的十六进制数。 我想将此文件读入二维数组。 我有两个问题: 在我的代码中使用 read 方法,*它包含一个数组,其中包含矩阵的每个条目(两个字符)。 如何将每个条目传递给单个变量而不是两个字符? 当我传入单个变量时,如何将其从字符转换为十六进制? 我的意思是“ff”应该转换为0xff。 我的部分代码如下。 如果可以使用更好的方法,我可以避免使用标记化功能。 char** tokens; char** it; while (fgets(line, sizeof(line), file) != NULL){ /* read a line */ tokens = tokenize(line); // split line for(it=tokens; it && *it; ++it){ printf("%s\n", *it); free(*it); } // end for } // end while char** tokenize(const char* str){ int count = 0; int capacity = 10; char** result = malloc(capacity
  • 如何在不使用 JSON.parse 的情况下将数组的字符串数组转换为普通数组(how convert string arrays of arrays into normal arrays without using JSON.parse)
    问题 我目前正在复制类似函数的 json 解析,但我一直无法处理嵌套的字符串数组,例如: '"[a, [b, c, e, g], n]"' 。 我尝试过诸如拆分、替换和索引之类的方法来尝试定位,但无法获得正确的输出。 最近的一个是: string.slice(1, string.length - 1).replace(/['"]+/g, '').replace(/[' '']+/g, '').split(',') ; 回答1 此解决方案适用于包含单个字符的数组,或包含仅包含单个字符的其他数组。 const string = '"[a, [b, c, e, g], n]"'.slice(2, -2); const array = []; let currArr = array; for (const char of string) { /[az]/.test(char) && currArr.push(char); /\]/.test(char) && (currArr = array); if (/\[/.test(char)) { currArr = []; array.push(currArr); } } console.log(array); // [ 'a', [ 'b', 'c', 'e', 'g' ], 'n' ] 当它遇到一个左括号
  • 如何将十六进制值转换为Unicode中的Special Char()?(How to convert hex value to Special Char( in Unicode )?)
    问题 在上一个问题中,我询问了有关特殊字符转换为十六进制的问题。 “ㅂ”的十六进制值为“ e38582” 现在,我在字符串中有了十六进制值。 字符串十六进制=“ e38582”; 如何转换此十六进制值以获取特殊字符。(在此示例中为“ㅂ” ) 我已经尝试过了,但是得到了IllegalFormatConversionException: String hex = "e38582"; BigInteger value = new BigInteger(hex, 16); String str = String.format("%c", value ); System.out.println("String : "+ str); 回答1 将十六进制转换为字节数组。 使用Java将十六进制转储的字符串表示形式转换为字节数组? 用正确的编码解释字节数组(基于您先前的问题,UTF-8): String output = new String(bytes, "UTF-8"); 回答2 从mkyong的博客尝试这种方法: public String convertHexToString(String hex){ StringBuilder sb = new StringBuilder(); StringBuilder temp = new StringBuilder(); /
  • 使用 Matlab Coder 将 C 字符数组转换为 Matlab 字符串(Converting a C char array into a Matlab String using Matlab Coder)
    问题 我有一些用 Matlab 编写的代码,我正在使用 Matlab Coder 将它们转换为 C 代码。 我编写了一个 C 函数,我想从生成的 C 代码中调用它。 这有效,到目前为止一切顺利。 问题是 C 函数的参数之一是用于输出字符串的 char**。 我通过制作一个不透明的 char* 并使用 coder.wref 来获取 char** 来实现这一点。 但是如何将不透明的 char* 转换为 Matlab 字符串,以便可以从我的函数中返回它? 代码是这样的: function [status,out] = cfun() buf = coder.opaque('char *', 'NULL'); len = coder.opaque('size_t ', 'NULL'); status = 0; status = coder.ceval('_cfun', coder.wref(buf), coder.wref(len)); out = buf; % How do I convert buf into a Matlab string here?? end _cfun 将一些数据写入 buf 并将长度写入 len。 我目前几乎有效的解决方案是在 Matlab 中手动制作一个字符数组并传输到数据。 像这样: length = cast(len, 'int32'); out =
  • 将 char[][] 转换为 char[](Converting char[][] to char[])
    问题 我的目标是打印一个新的字符串 char[] result = someArray(); System.out.print(new string(result)) 我正在我的任务char[][]使用 2 维数组。 我想将我的char[][]数组转换为char[] 如何直接从char[][]打印单个字符串或轻松将其转换为char[] ? Arrays.toDeepString()对我不起作用,因为它以[[a,b,c],[d,e,f]]格式打印,我正在寻找abcdef的输出。 回答1 可以使用 String(char[]) 构造函数将每个“行”字符数组轻松转换为单个字符串,然后连接生成的字符串: static String singleString(char[][] arr) { return Arrays.stream(arr) .map(String::new) .collect(Collectors.joining("")); } 使用 StringBuilder 的“Streamless”版本可能如下所示: static String singleString(char[][] arr) { StringBuilder sb = new StringBuilder( arr.length * (arr.length > 0 ? arr[0].length : 0))
  • C# - 如何将字符串转换为字符?(C# - How to convert string to char?)
    问题 我是 C# 的初学者,我想知道如何将字符串转换为字符,特别是string[]到char[] 。 我试过ToCharArray() ,但后来我收到一个错误,说它不存在。 Convert.ToChar(<char here>)给我一个错误说 无法从“char”转换为“System.Array” 回答1 用: string str = "Hello"; char[] characters = str.ToCharArray(); 如果你有一个单一的字符串,你也可以试试 string str = "A"; char character = char.Parse(str); //OR string str = "A"; char character = str.ToCharArray()[0]; 回答2 对于单个字符串 String.ToCharArray 应该使用 string str = "One"; var charArray = str.ToCharArray(); 对于字符串数组 string[] arrayStrings = { "One", "Two", "Three" }; var charArrayList = arrayStrings.Select(str => str.ToCharArray()).ToList(); 从单一字符串的单个字符: string str
  • 如何将字节数组转换为人类可读的格式?(How to convert byte array into Human readable format?)
    问题 我正在使用“Blowfish”算法来加密和解密文本内容。 我将加密的内容嵌入到图像中,但是在提取时我得到了字节数组,我将它传递给类Cipher 的方法更新。 但是该方法返回给我的字节数组,我想将其转换回人类可读的形式。 当我使用FileOutputStream 的write方法时,它在提供文件名时工作正常。 但现在我想以人类可读的格式在控制台上打印它。 如何度过这一关? 我也尝试过 ByteArrayOutputStream。 但效果并不好。 谢谢你。 回答1 byte[] byteArray = new byte[] {87, 79, 87, 46, 46, 46}; String value = new String(byteArray); 回答2 如果您只想查看数值,您可以遍历数组并打印每个字节: for(byte foo : arr){ System.out.print(foo + " "); } 或者,如果您想查看十六进制值,您可以使用printf : System.out.printf("%02x ", foo); 如果您想查看字节数组表示的字符串,您可以这样做 System.out.print(new String(arr)); 回答3 您可以使用此方法将 bytearray 转换为包含字节十六进制值的字符串。 这甚至适用于 java < 6 public
  • 如何在 JNI 中将 Java 字节数组的内容转换为 C 字符串?(How to convert the contents of a Java byte array to C string in JNI?)
    问题 更新: 错误: jbyte* elements = (*env)->GetByteArrayElements(env, array, NULL); 仅返回 8 个字节。 提供任何替代方法来检索字节形式 jbytearray。 我是 JNI 的新手,所以我对 JNI 和英语都不熟悉。 现在我尝试使用 Java 读取文件的简单 JNI 程序,并使用 C 将其写入文件。 文件读取java代码: public class FileIO { static { System.loadLibrary("io"); } private native void writeToFile(byte[] msg); public static void main(String[] args) throws IOException { FileInputStream fileInputStream=null; File file = new File("version1-1.png"); byte[] bFile = new byte[(int) file.length()]; try { //convert file into array of bytes fileInputStream = new FileInputStream(file); fileInputStream.read(bFile)
  • 如何将ac字符串转换为c中的转义版本?(How to convert a c string into its escaped version in c?)
    问题 是否有任何内置函数或替代的简单快速的转义C字符数组的方法,如果与printf一起使用,应该再次产生原始字符数组。 char* str = "\tHello World\n"; char* escaped_str = escape(str); //should contain "\tHello World\n" with char \ ,t. printf(escaped_str); //should print out [TAB]Hello World[nextline] similar to if str was printed. c 中是否有一种简单的方法来转义带有 c 转义字符的字符串。 更新 我有一个包含带有转义字符的字符串的缓冲区。 我想包含在一个 C 文件中。 为此,我需要逃避它,以便可以遵守。 我只需要知道是否有简单的方法可以做到这一点,而不是扫描缓冲区以获取 \n \t 等并在那里生成 c 转义字符。 for(int i=0; i< strlen(buffer);i++) if(buffer[i]=='\n') sprintf(dest,"\\n") else .... 更新 2 我写了这个函数。 它工作正常。 char* escape(char* buffer){ int i,j; int l = strlen(buffer) + 1; char esc
  • 如何将char数组转换回字符串?(How to convert a char array back to a string?)
    问题 我有一个char数组: char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'}; 我当前的解决方案是 String b = new String(a); 但是肯定有更好的方法吗? 回答1 不,该解决方案是绝对正确的,而且非常少。 但是请注意,这是一种非常不寻常的情况:因为String是在Java中专门处理的,所以即使"foo"实际上也是String 。 因此,在普通代码中不需要将String拆分为单个char并将其重新连接。 与此相比,C / C ++,其中"foo"你有一捆char由零字节一边和终止小号string它们之间的另一边,许多转换,由于做传统方法。 回答2 String text = String.copyValueOf(data); 或者 String text = String.valueOf(data); 可以说更好(封装了new String调用)。 回答3 这会将char数组转换回字符串: char[] charArray = {'a', 'b', 'c'}; String str = String.valueOf(charArray); 回答4 String str = "wwwwww3333dfevvv"; char[] c = str.toCharArray()
  • 如何将文件中的字符转换为 Java 中的二维数组?(How do i get characters in a file into a 2D array in Java?)
    问题 所以我有一个看起来像这样的文件: +-+-+-+ ("/n") |S| | ("/n") + + + + ("/n") | |E| ("/n") +-+-+-+ ("/n") /n是文件中的新行 我想将这里的每个字符作为 5x7 数组中的一个条目。 我不知道该怎么做,这是我尝试过的(还有很多其他的东西。输入是文件): public static void main(String[] args) throws FileNotFoundException { Scanner input = new Scanner(new File("maze0.txt")); char maze[][] = new char[5][7]; int charCount = 0; for (int row = 0; row < finalHeight; row++) { for (int col = 0; col < finalWidth; col++) { while (input.hasNextLine()){ String line = input.nextLine(); if ((row < finalHeight - 1 || col < finalWidth) && charCount < line.length()) { maze[row][col] = line.charAt
  • 将NSString转换为char数组(Convert NSString into char array)
    问题 我有一个char[]类型的变量,我想在其中复制NSString值。 如何将NSString转换为char数组? 回答1 使用-[NSString UTF8String]: NSString *s = @"Some string"; const char *c = [s UTF8String]; 如果您的字符串是使用非UTF-8编码的,则也可以使用-[NSString cStringUsingEncoding:]。 一旦有了const char * ,就可以像处理chars数组一样使用它: printf("%c\n", c[5]); 如果要修改字符串,请进行复制: char *cpy = calloc([s length]+1, 1); strncpy(cpy, c, [s length]); // Do stuff with cpy free(cpy); 回答2 如果您只想要一个char*包含字符串内容的内容,mipadi的答案是最好的,但是NSString提供了将数据获取到您自己分配的缓冲区中的方法。 例如,您可以使用getCharacters:range:将字符复制到unichar数组中,如下所示: NSUInteger length = [str length]; unichar buffer[length]; [str getCharacters:buffer
  • 如何将 String^ 转换为 char 数组 [重复](How to convert String^ to char array [duplicate])
    问题 这个问题在这里已经有了答案: 8 年前关闭。 可能的重复: 需要将 String^ 转换为 char * 我一直在寻找这个解决方案,但我找不到任何具体的东西。 我在 Visual Studio C++、windows 窗体应用程序中工作。 我需要将String^值转换为 char 数组。 我已将TextBox中的值存储在String^ : String^ target_str = targetTextBox->Text; // lets say that input is "Need this string" 我需要转换这个String^并获得与此类似的输出: char target[] = "Need this string"; 如果它被定义为char target[]它可以工作,但我想从TextBox获取这个值。 我试过编组,但没有奏效。 有什么解决方法可以做到这一点吗? 我已经找到了如何将std::string转换为char数组,所以另一种解决方法是将String^转换为std::string但我也遇到了这个问题。 回答1 最好的办法是遵循这个问题中列出的例子。 这是一些示例代码: String^ test = L"I am a .Net string of type System::String"; IntPtr ptrToNativeString = Marshal