11

How do I get a part of a string in C++? I want to know what are the elements from 0 to i.

user2864740
  • 60,010
  • 15
  • 145
  • 220
small_potato
  • 3,127
  • 5
  • 39
  • 45

5 Answers5

19

You want to use std::string::substr. Here's an example, shamelessly copied from http://www.cplusplus.com/reference/string/string/substr/

// string::substr
#include <iostream>
#include <string>
using namespace std;

int main ()
{
  string str="We think in generalities, but we live in details.";
                             // quoting Alfred N. Whitehead
  string str2, str3;
  size_t pos;

  str2 = str.substr (12,12); // "generalities"

  pos = str.find("live");    // position of "live" in str
  str3 = str.substr (pos);   // get from "live" to the end

  cout << str2 << ' ' << str3 << endl;

  return 0;
}
Will
  • 5,429
  • 4
  • 22
  • 31
2

You use substr, documented here:

#include <iostream>
#include <string>
using namespace std;
int main(void) {
    string a;
    cout << "Enter string (5 characters or more): ";
    cin >> a;
    if (a.size() < 5)
        cout << "Too short" << endl;
    else
        cout << "First 5 chars are [" << a.substr(0,5) << "]" << endl;
    return 0;
}

You can also then treat it as a C-style string (non-modifiable) by using c_str, documented here.

paxdiablo
  • 854,327
  • 234
  • 1,573
  • 1,953
2

If the string is declared as an array of characters, you can use the following approach:

char str[20];
int i;
strcpy(str, "Your String");

// Now let's get the sub-string
cin >> i;

// Do some out-of-bounds validation here if you want..
str[i + 1] = 0;
cout << str;

If you mean std::string, use substr function as Will suggested.

Ardent Coder
  • 3,777
  • 9
  • 27
  • 53
raj
  • 3,769
  • 4
  • 25
  • 43
1

Assuming you're using the C++ std::string class

you can do:

std::string::size_type start = 0;
std::string::size_type length = 1; //don't use int. Use size type for portability!
std::string myStr = "hello";
std::string sub = myStr.substr(start,length);
std::cout << sub; //should print h
Community
  • 1
  • 1
Alan
  • 45,915
  • 17
  • 113
  • 134
1

use:

std::string sub_of_s(s.begin(), s.begin()+i);

which create a string sub_of_s which is the first i-th the element in s.

an offer can't refuse
  • 4,245
  • 5
  • 30
  • 50