【问题标题】:Get only first 2 chars from string仅从字符串中获取前 2 个字符
【发布时间】:2015-08-08 04:55:08
【问题描述】:

我想用不同字符串的前两个字符组成一个字符串

所以我有:

int main(int argc, string argv[])
{
    string s = argv[1];
    string key = // here is where I dont know how to get the first 2 chars.
    printf("%s\n", key);
} 

如果argv[1] 是:1220kjs,我需要字符串“key”为 12,argv[1] 可以是数字或字符。所以如果 argv[1] 输入为 jths528as,我需要字符串“key”为“jt”。

我尝试了各种方法,但无法编译。 s.Substring(0,2) 给我错误:成员引用基类型 'string' aka 'char *') 不是结构或联合

我找到了解决办法:

string t = argv[1];
char key[3];
strncpy(key, t, 2);
key[2] = '\0';

【问题讨论】:

  • argv是一个二维数组,那么如何取值argv[1] is: 122085
  • @un-lucky 看来 argv 应该是一个字符串数组。
  • 在我们知道 argv 是什么类型之前,很难给你一个好的答案
  • 您的问题不清楚。字符串b 与该问题有什么关系?正如其他人所说,您需要告诉我们argv 是什么类型。
  • 如果 argv 是一个 string[],那么 string a = argv[1];如果 argv 中至少有两个元素,string c = a.Substring(0, 2) 就可以工作。

标签: c string


【解决方案1】:

鉴于您在问题中提供的内容和解释您的意思,我只能假设 argv 是一个 int 或 char 的二维数组。

string a = argv[1][0]; // so this has 1
string b = argv[1][1]; // this has 2 in it

你希望 c 是 12。

    int[,] t = new int[2, 6] {{1,2,3,4,5,6},
                              {1,2,2,0,8,5}};

    string a = Convert.ToString(t[1,0]);
    string b = Convert.ToString(t[1,1]);

    string c = a+b; // "12"

如果需要,可以从这里将其转换为数字 12。

【讨论】:

    【解决方案2】:

    这是我使用的方法:

    string key = argv[1];
    
    char c[3] = {key[0], key[1], '\0'};
    
    string s = c;
    
    printf("string: %s\n", s);
    

    【讨论】:

      【解决方案3】:

      由于源字符串可能很小,例如 "x",或者理论上是 "",因此只需打印大小限制:

      if (argc >= 2) {
        int n = 2;
        char key[n + 1];
        // Print up to n characters & form a string.
        snprintf(key, n + 1, "%s", argv[1]); 
        printf("<%s>\n", key);
      } 
      

      【讨论】:

        猜你喜欢
        • 2016-12-02
        • 2019-03-19
        • 1970-01-01
        • 1970-01-01
        • 2019-02-02
        • 2012-11-01
        • 1970-01-01
        • 2014-02-15
        • 1970-01-01
        相关资源
        最近更新 更多